Matthias Clasen [Tue, 28 Jul 2020 19:56:30 +0000 (15:56 -0400)]
a11y: Set up controls relations for scrollbars
GtkScrolledWindow knows what its scrollbars control,
so set up the accessible relations for this.
Matthias Clasen [Tue, 28 Jul 2020 19:44:12 +0000 (15:44 -0400)]
a11y: Set accessible roles for GtkImage and GtkPicture
Use the img accessible role for these.
Also update the documentation and add tests.
Matthias Clasen [Tue, 28 Jul 2020 16:30:47 +0000 (16:30 +0000)]
Merge branch 'ebassi/for-master' into 'master'
Ebassi/for master
See merge request GNOME/gtk!2311
Emmanuele Bassi [Tue, 28 Jul 2020 12:27:50 +0000 (13:27 +0100)]
a11y: Update the valuetext attribute of GtkProgressBar
Since progress bars can have a label, we should propagate that information
to ATs whenever it's set.
Emmanuele Bassi [Tue, 28 Jul 2020 15:46:53 +0000 (16:46 +0100)]
a11y: Add an explicit "reset to default" method
In some cases we explicitly want to unset an accessible attribute; for
instance, an accessible property is gated on a widget property, and if
the widget property gets unset, the accessible property should be reset.
Emmanuele Bassi [Tue, 28 Jul 2020 15:41:44 +0000 (16:41 +0100)]
a11y: Add proper error reporting to value collection
We're currently overloading NULL to mean both "this value is undefined,
and should be reset to its default" and "the value collection failed".
Let's do error reporting right, by using GError to mean "the collection
failed, for this specific reason"; then, we can use a NULL return value
to signal that the accessible attribute should be reset to its default
value.
This is only relevant for pointer-sized attribute values: strings,
references, and reference lists; numeric, boolean, tristate, and token
values either cannot be undefined, or have a specific "undefined" value.
Emmanuele Bassi [Tue, 28 Jul 2020 14:49:14 +0000 (15:49 +0100)]
a11y: Fix the error message for the attribute test macros
We're missing a closing parenthesis.
Emmanuele Bassi [Tue, 28 Jul 2020 12:27:05 +0000 (13:27 +0100)]
a11y: Use undefined as default for string attributes
Instead of an empty string.
Emmanuele Bassi [Tue, 28 Jul 2020 12:33:05 +0000 (13:33 +0100)]
Remove stray gtk-doc annotation
It confuses the g-i scanner, and gtk-doc.
Piotr Drąg [Tue, 28 Jul 2020 15:01:53 +0000 (17:01 +0200)]
Update POTFILES.in and POTFILES.skip
Matthias Clasen [Tue, 28 Jul 2020 13:08:28 +0000 (13:08 +0000)]
Merge branch 'wip/a11y-inspector' into 'master'
inspector: Show a11y information
See merge request GNOME/gtk!2302
Matthias Clasen [Mon, 27 Jul 2020 17:29:21 +0000 (13:29 -0400)]
inspector: Show a11y information
Show a tab for accessibility information.
This shows the role and the accessible attributes
(states, properties, relations).
For now, changing the values is not possible, and
we only show the explicitly set values. In the future,
we want to show the attributes that are relevant for
the role, regardless of whether they are set or not,
and allow changing some of the attributes (the ones
that are not fully managed by GTK itself).
Matthias Clasen [Tue, 28 Jul 2020 02:51:34 +0000 (22:51 -0400)]
a11y: Add change notification to GtkATContext
Emit a ::state-change signal when state changes;
this was already a vfunc, but we want to listen
to state changes from the inspector too.
Emmanuele Bassi [Tue, 28 Jul 2020 11:47:14 +0000 (11:47 +0000)]
Merge branch 'a11y-tests' into 'master'
Add more a11y tests
See merge request GNOME/gtk!2303
Matthias Clasen [Tue, 28 Jul 2020 11:44:05 +0000 (11:44 +0000)]
Merge branch 'wip/baedert/for-master' into 'master'
Wip/baedert/for master
See merge request GNOME/gtk!2306
Matthias Clasen [Tue, 28 Jul 2020 11:37:45 +0000 (11:37 +0000)]
Merge branch 'ebassi/for-master' into 'master'
Split GtkProgressBar finalization
See merge request GNOME/gtk!2308
Emmanuele Bassi [Tue, 28 Jul 2020 10:43:32 +0000 (11:43 +0100)]
Split GtkProgressBar finalization
We're stopping activity mode when finalizing, which will change
accessible state; this will create a GtkATContext, and since GtkWidget
drops its GtkATContext on dispose(), we're going to end up leaking it on
the floor:
```
2,007 (64 direct, 1,943 indirect) bytes in 1 blocks are definitely lost in loss record 36,242 of 36,944
at 0x483977F: malloc (vg_replace_malloc.c:307)
by 0x5222105: g_malloc (gmem.c:106)
by 0x523E222: g_slice_alloc (gslice.c:1025)
by 0x523E261: g_slice_alloc0 (gslice.c:1051)
by 0x534B398: g_type_create_instance (gtype.c:1849)
by 0x53302EE: g_object_new_internal (gobject.c:1937)
by 0x53312AF: g_object_new_valist (gobject.c:2262)
by 0x532FEE8: g_object_new (gobject.c:1780)
by 0x4B3F942: gtk_test_at_context_new (gtktestatcontext.c:107)
by 0x491CC50: gtk_at_context_create (gtkatcontext.c:380)
by 0x4BFEDA0: gtk_widget_accessible_get_at_context (gtkwidget.c:8127)
by 0x4906079: gtk_accessible_get_at_context (gtkaccessible.c:83)
by 0x490618F: gtk_accessible_update_state (gtkaccessible.c:137)
by 0x4ACBA6D: gtk_progress_bar_act_mode_leave (gtkprogressbar.c:690)
by 0x4ACB4F8: gtk_progress_bar_finalize (gtkprogressbar.c:564)
```
We're also unparenting widgets and changing styles, which is another
potential source of leaks and side effects.
Timm Bäder [Tue, 28 Jul 2020 05:48:06 +0000 (07:48 +0200)]
bitset: Fix typo
Timm Bäder [Tue, 28 Jul 2020 04:14:45 +0000 (06:14 +0200)]
widget-factory: Remove useless separators
They don't serve a purpose and are not relevant for theming purposes.
Timm Bäder [Sat, 25 Jul 2020 10:12:02 +0000 (12:12 +0200)]
gl renderer: Throw inset shadows with all !send values away
Timm Bäder [Fri, 24 Jul 2020 18:45:22 +0000 (20:45 +0200)]
gl renderer: Linear gradient state tracking
Timm Bäder [Fri, 24 Jul 2020 18:02:26 +0000 (20:02 +0200)]
inspector: Avoid an uninitialized value
Timm Bäder [Fri, 24 Jul 2020 18:01:49 +0000 (20:01 +0200)]
gl renderer: Assert that we have program state
This is never a problem in reality, just for static analysis.
Timm Bäder [Fri, 24 Jul 2020 18:01:37 +0000 (20:01 +0200)]
gl renderer: Repat node child bounds can't be NULL
Timm Bäder [Fri, 24 Jul 2020 18:01:14 +0000 (20:01 +0200)]
gl renderer: Remove dead code
We aren't using n_corners anyway
Timm Bäder [Fri, 24 Jul 2020 17:06:50 +0000 (19:06 +0200)]
render nodes: Simplify diffing of uniform border nodes
Timm Bäder [Fri, 24 Jul 2020 17:00:38 +0000 (19:00 +0200)]
listbox demo: Remove frames around labels
Having frames around those labels looks stupid
Timm Bäder [Fri, 24 Jul 2020 16:54:23 +0000 (18:54 +0200)]
gl: Add a gdk_gl_context_has_debug accessor
Check if the label_object_ etc. functions are gonna do anything at all.
The g_type_name_from_instance calls keep poppoing up in profiles.
Timm Bäder [Fri, 24 Jul 2020 16:33:33 +0000 (18:33 +0200)]
GskTransform: Restructure _to_affine and _to_translation
Make the simple cases more explicit.
Timm Bäder [Fri, 24 Jul 2020 16:30:36 +0000 (18:30 +0200)]
gl renderer: Save rectilinearity in clip stack
So we don't have to repeatedly call it in pop_clip()
Timm Bäder [Fri, 24 Jul 2020 15:48:54 +0000 (17:48 +0200)]
GskTransform: Remove unused function from private header
We only use this in gsktransform.c
Timm Bäder [Fri, 24 Jul 2020 15:29:22 +0000 (17:29 +0200)]
gl renderer: More color matrix state tracking
Timm Bäder [Fri, 24 Jul 2020 15:18:18 +0000 (17:18 +0200)]
gl renderer: Add contains_rect helper
Timm Bäder [Fri, 24 Jul 2020 15:01:32 +0000 (17:01 +0200)]
gl renderer: Add own graphene_rect_intersects
Timm Bäder [Fri, 24 Jul 2020 13:59:45 +0000 (15:59 +0200)]
gsk: Remember border node uniformity
Lots of border nodes have all the same width and the same color.
Renderers might be able to simplifty that, so keep an extra bit per
border node.
Timm Bäder [Fri, 24 Jul 2020 06:49:24 +0000 (08:49 +0200)]
gl renderer: Moar state tracking
Track what we really need to send for inset shadows, which are used
as a border replacement in many cases.
Fishbowl says I can draw around 200-300 more switches per frame like
this too.
Timm Bäder [Wed, 22 Jul 2020 05:10:59 +0000 (07:10 +0200)]
widget: Compare proper adjusted size to new size when allocating
We were comparing first but then still modifying the adjusted size later
on, leading to unnecessary resizes.
Timm Bäder [Wed, 22 Jul 2020 04:35:48 +0000 (06:35 +0200)]
gl renderer: Fix scrolledwindow undershoot rendering
Matthias Clasen [Tue, 28 Jul 2020 01:17:41 +0000 (21:17 -0400)]
a11y: Add spinbutton tests
Tests the fix in the previous commit.
Matthias Clasen [Tue, 28 Jul 2020 01:17:07 +0000 (21:17 -0400)]
spinbutton: Update accessible state
Make sure to set value-max/min/now when the adjustment
changes.
Matthias Clasen [Tue, 28 Jul 2020 00:28:19 +0000 (20:28 -0400)]
a11y: Add scrollbar tests
Tests the fix in the previous commit.
Matthias Clasen [Tue, 28 Jul 2020 01:05:48 +0000 (21:05 -0400)]
widget: Update accessible state
The sensitive property corresponds to the accessible
property disabled, so update it when sensitivity
changes.
Matthias Clasen [Tue, 28 Jul 2020 00:27:27 +0000 (20:27 -0400)]
scrollbar: Update accessible state
We have the scrollbar role, and are therefore expected
to set value-min/max/now properties.
Matthias Clasen [Mon, 27 Jul 2020 23:58:08 +0000 (19:58 -0400)]
a11y: Add switch tests
Tests the fix in the previous commit.
Matthias Clasen [Mon, 27 Jul 2020 23:57:13 +0000 (19:57 -0400)]
switch: Initialize accessible state
The checked state defaults to undefined, so we need
to set it to the desired false state.
Matthias Clasen [Mon, 27 Jul 2020 23:38:51 +0000 (19:38 -0400)]
a11y: Add separator tests
Tests the fix in the previous commit.
Matthias Clasen [Mon, 27 Jul 2020 23:38:01 +0000 (19:38 -0400)]
separator: Initialize accessible state
The orientation property of separators should be
set ab initio.
Matthias Clasen [Mon, 27 Jul 2020 23:26:22 +0000 (19:26 -0400)]
a11y: Add progressbar tests
Test the changes in the previous commit.
Matthias Clasen [Mon, 27 Jul 2020 23:24:49 +0000 (19:24 -0400)]
progressbar: Fix up acessible state handling
We must initialize the properties in init, since they
are expected to be there ab initio, and we can't call
gtk_accessible_update_property from finalize - it causes
us to recreate an at context and badness follows.
Matthias Clasen [Mon, 27 Jul 2020 22:56:06 +0000 (18:56 -0400)]
a11y: Add dialog and window tests
Tests the modal property changes in the previous commit.
Matthias Clasen [Mon, 27 Jul 2020 22:25:37 +0000 (18:25 -0400)]
a11y: Set an accessible role for GtkWindow
Use the window accessible role for GtkWindow, and
set the modal accessible property.
Matthias Clasen [Mon, 27 Jul 2020 22:08:26 +0000 (18:08 -0400)]
a11y: Add checkbutton tests
Tests the fix in the previous commit.
Matthias Clasen [Mon, 27 Jul 2020 22:07:26 +0000 (18:07 -0400)]
checkbutton: Initialize accessible state
The checked state of checkbuttons should be FALSE
initially, not UNDEFINED.
Matthias Clasen [Mon, 27 Jul 2020 20:51:17 +0000 (20:51 +0000)]
Merge branch 'wip/chergert/fix-macos-time-conversion' into 'master'
macos: support ARM/PowerPC time conversion for DisplayLink times
See merge request GNOME/gtk!2301
Christian Hergert [Mon, 27 Jul 2020 19:49:57 +0000 (12:49 -0700)]
macos: support ARM/PowerPC time conversion for DisplayLink times
When converting DisplayLink frame presentation times, we need to take into
account the arch-specific types. This tracks changes in GNOME/GLib!1566 so
that precision is not lost.
Matthias Clasen [Mon, 27 Jul 2020 18:50:45 +0000 (18:50 +0000)]
Merge branch 'matthiasc/for-master' into 'master'
Matthiasc/for master
See merge request GNOME/gtk!2300
Yuri Chornoivan [Mon, 27 Jul 2020 17:45:19 +0000 (17:45 +0000)]
Update Ukrainian translation
Matthias Clasen [Mon, 27 Jul 2020 17:21:59 +0000 (13:21 -0400)]
gtk-demo: Simplify colors demo
Make best use of our new constructors.
Matthias Clasen [Mon, 27 Jul 2020 16:39:43 +0000 (12:39 -0400)]
NEWS: Tweak the wording
Matthias Clasen [Mon, 27 Jul 2020 15:45:51 +0000 (15:45 +0000)]
Merge branch 'a11y-docs' into 'master'
a11y: Document roles of widgets
See merge request GNOME/gtk!2299
Matthias Clasen [Mon, 27 Jul 2020 15:10:58 +0000 (11:10 -0400)]
docs: Flesh out the role table in the a11y intro
Add cross-references for all the widgets currently
implementing non-default roles.
Matthias Clasen [Mon, 27 Jul 2020 14:46:52 +0000 (10:46 -0400)]
a11y: Document roles of widgets
Add a section to the long description for each
widget that is using a non-default accessible role.
Piotr Drąg [Mon, 27 Jul 2020 14:45:40 +0000 (16:45 +0200)]
Update POTFILES.in and POTFILES.skip
Matthias Clasen [Mon, 27 Jul 2020 14:27:07 +0000 (14:27 +0000)]
Merge branch 'ebassi/a11y-fixes' into 'master'
Ebassi/a11y fixes
Closes #2955
See merge request GNOME/gtk!2298
Emmanuele Bassi [Mon, 27 Jul 2020 12:58:11 +0000 (13:58 +0100)]
a11y: Test unset relations
We use "NULL" in C to mean "undefined", when it comes to relations that
deal with references or reference lists.
Emmanuele Bassi [Mon, 27 Jul 2020 12:53:05 +0000 (13:53 +0100)]
a11y: Allow unsetting the relations using NULL
Accessible values storing references and reference lists can be unset by
using NULL to mean "undefined"; since we cannot return the NULL value,
we need to intercept it when collecting a value, and replace it with an
undefined GtkAccessibleValue, which is also the value used as the
default for GtkAccessibleRelation values that store a reference or a
reference list.
Fixes: #2955
Emmanuele Bassi [Mon, 27 Jul 2020 12:50:01 +0000 (13:50 +0100)]
docs: Document a11y attributes
Matthias Clasen [Mon, 27 Jul 2020 12:36:54 +0000 (08:36 -0400)]
NEWS: Updates
Emmanuele Bassi [Mon, 27 Jul 2020 12:06:59 +0000 (12:06 +0000)]
Merge branch 'ebassi/ci-dags' into 'master'
ci: Use DAG attributes
See merge request GNOME/gtk!2297
Matthias Clasen [Mon, 27 Jul 2020 11:55:19 +0000 (11:55 +0000)]
Merge branch 'ebassi/new-a11y' into 'master'
Accessibility rework
See merge request GNOME/gtk!2239
Emmanuele Bassi [Mon, 27 Jul 2020 11:44:36 +0000 (12:44 +0100)]
ci: Use DAG attributes
Some jobs can run out of order, as they are entirely self-contained. If
we use the newly added DAG attributes, we can speed up the CI pipeline.
Emmanuele Bassi [Mon, 27 Jul 2020 10:46:52 +0000 (11:46 +0100)]
a11y: Make GtkATContext.create() public
Implementations of the GtkAccessible interface should have a way to
instantiate the appropriate GtkATContext.
Emmanuele Bassi [Mon, 27 Jul 2020 10:46:07 +0000 (11:46 +0100)]
docs: Add missing GTK_ACCESSIBLE_VALUE_UNDEFINED
Matthias Clasen [Mon, 27 Jul 2020 05:21:05 +0000 (01:21 -0400)]
a11y: Add some more tests
Test that setting multiple states or properties
at the same time works as expected.
Matthias Clasen [Mon, 27 Jul 2020 04:22:15 +0000 (00:22 -0400)]
Add some more a11y tests
Add some tests that exercise the accessible machinery
without any connection to widgets.
Matthias Clasen [Mon, 27 Jul 2020 04:21:01 +0000 (00:21 -0400)]
a11y: Be a bit safer against crashes
We are collecting values from varargs and use them
as indices into static arrays. We should at least
do some bounds checking to prevent silly crashes.
Matthias Clasen [Mon, 27 Jul 2020 02:39:17 +0000 (22:39 -0400)]
docs: Expand GtkAccessible documentation
Add some hints and examples.
Matthias Clasen [Mon, 27 Jul 2020 02:13:41 +0000 (22:13 -0400)]
docs: Add documentation for accessible enumerations
This is largely taking text from the aria spec.
Matthias Clasen [Mon, 27 Jul 2020 01:18:50 +0000 (21:18 -0400)]
docs: Update GtkAccessibleRole docs
Sync up the docs with changed enum values, and document
all the roles that are used in GTK at the moment. All
others are left as "Unused".
Matthias Clasen [Mon, 27 Jul 2020 00:54:57 +0000 (20:54 -0400)]
docs: Fix up some issues in the a11y docs
Fix up syntax errors and links in the introductory
section about accessibility.
Matthias Clasen [Mon, 27 Jul 2020 00:30:36 +0000 (20:30 -0400)]
docs: Update a11y docs
Add some missing functions.
Matthias Clasen [Sun, 26 Jul 2020 23:57:48 +0000 (23:57 +0000)]
Merge branch 'drop-down-constructor' into 'master'
GtkDropDown api revisions
See merge request GNOME/gtk!2286
Matthias Clasen [Sun, 26 Jul 2020 23:56:21 +0000 (23:56 +0000)]
Merge branch 'list-constructors' into 'master'
List constructors
See merge request GNOME/gtk!2296
Matthias Clasen [Sun, 26 Jul 2020 22:50:50 +0000 (18:50 -0400)]
gridview: Revise constructors
Make both gtk_grid_view_new and gtk_grid_view_new_with_factory
take a model as first argument, and make all arguments
allow-none and transfer full.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 22:32:50 +0000 (18:32 -0400)]
columnview: Revise the constructor
Make gtk_column_view_new take a model as first argument,
and make it allow-none and transfer full.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 22:27:23 +0000 (18:27 -0400)]
listview: Revise constructors
Make both gtk_list_view_new and gtk_list_view_new_with_factory
take a model as first argument, and make all arguments
allow-none and transfer full.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 13:34:08 +0000 (09:34 -0400)]
dropdown: Revise constructors
A dropdown without a model is useless, so accept a model
and expression in the constructor. Allow them to be NULL,
but consume them if given. This makes chained constructors
convenient without breaking language bindings.
Drop gtk_drop_down_set_from_strings() and instead add
gtk_drop_down_new_from_strings().
Update all users.
Matthias Clasen [Sun, 26 Jul 2020 21:34:44 +0000 (17:34 -0400)]
selectionfiltermodel: Make constructor allow-none
We don't pay attention to item-type anymore, so
drop the item-type property and the _for_item_type()
constructor, and allow passing NULL to the regular
constructor.
We don't make this constructor transfer-full, since
the selection filter model is not a wrapping model
like the others. It is more like fork than a wrap.
Matthias Clasen [Sun, 26 Jul 2020 21:25:06 +0000 (17:25 -0400)]
multiselection: Make constructor transfer full
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Also make the constructor return GtkMultiSelection *.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 21:16:15 +0000 (17:16 -0400)]
singleselection: Make constructor transfer full
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 20:55:43 +0000 (16:55 -0400)]
noselection: Make constructor transfer full
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 20:38:53 +0000 (16:38 -0400)]
treelistmodel: Make constructor transfer full
Make gtk_tree_list_model_new() take the root model
as first argument, and make it transfer full, for
consistency with other wrapping list constructors.
Update all callers.
Still missing here: Make the model property writable,
and allow passing NULL in the constructor.
Matthias Clasen [Sun, 26 Jul 2020 20:25:12 +0000 (16:25 -0400)]
sortlistmodel: Make constructor transfer full
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 19:55:44 +0000 (15:55 -0400)]
filterlistmodel: Make constructor transfer full
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 19:38:15 +0000 (15:38 -0400)]
slicelistmodel: Make constructor transfer full
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 18:37:55 +0000 (14:37 -0400)]
listlistmodel: Drop item_type
We are using G_TYPE_OBJECT throughout, so there
is no need for GtkListListModel to do anything else.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 18:20:25 +0000 (14:20 -0400)]
maplistmodel: Make constructor transfer full
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
Matthias Clasen [Sun, 26 Jul 2020 14:53:55 +0000 (10:53 -0400)]
flattenlistmodel: Make the constructor transfer full
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
Emmanuele Bassi [Sun, 26 Jul 2020 19:56:54 +0000 (20:56 +0100)]
ci: Re-enable the accessibility test suite
Now that we have something that is both reliable and local.
Emmanuele Bassi [Sun, 26 Jul 2020 19:30:35 +0000 (20:30 +0100)]
a11y: Add a simple test case for GtkButton's accessible state